<?php

 if (!defined('BASEPATH'))
     exit('No esta permitido el acceso directo');

 class Model_alumno extends CI_Model {

     private $errormensaje, $errorcodigo;



     /**
      * ---------------------------------------------------------------
      * CONSTRUCTOR
      * ---------------------------------------------------------------
      * Este constructor carga la clase alumno_class de la API
      * 
      * @author Sergio Morlán Páramo
      */
     public function __construct() {
         // Call the Model constructor
         parent::__construct();
         $this->load->library("api/alumno_class");

     }




     /**
      * Obtenemos el error SQL si es que existe inmediatamente después de que se ejecuta
      * algun query
      * 
      * @return String 
      * @author Sergio Morlán Páramo
      */
     public function get_errormensaje() {
         return $this->errormensaje;

     }




     /**
      * Obtenemos el codigo de error SQL si es que existe inmediatamente después de que se 
      * ejecuta algun query
      * 
      * @return int
      * @author Sergio Morlán Páramo 
      */
     public function get_errorcodigo() {
         return $this->errorcodigo;

     }




     /**
      * Vamos a verificar que el correo electronico con el que se intenta registrar el 
      * nuevo alumno no exista en la base de datos.
      * 
      * @return boolean
      * @author Sergio Morlán Páramo 
      */
     public function disponibilidad_correoElectronico() {
         if ($this->alumno_class->xget($_POST["alumno_correoElectronico"], "correoElectronico")) {
             $this->errorcodigoe = 0;
             $this->errormensaje = "Correo Electronico Duplicado";
             return FALSE;
         } else {
             return TRUE;
         }

     }




     /**
      * Vamos a verificar que el numero de Identificación con el que se intenta registrar el 
      * nuevo alumno no exista en la base de datos.
      * 
      * @return boolean
      * @author Sergio Morlán Páramo 
      */
     public function disponibilidad_numeroIdentificacion() {
         if ($this->alumno_class->xget($_POST["alumno_numeroIdentificacion"], "numeroIdentificacion")) {
             $this->errorcodigoe = 0;
             $this->errormensaje = "Id Duplicado";
             return FALSE;
         } else {
             return TRUE;
         }

     }




     /**
      * Vamos a insertar un Alumno para lo que necesitaremos que el envío de los datos sean
      * mediante POST, utilizaremos alumno_class de la API 
      * 
      * @return boolean 
      * @author Sergio Morlán Páramo
      */
     public function registrar() {

         // Asignado los atributos de alumno
         $this->alumno_class->set_matricula($this->alumno_class->get_siguienteID());
         $this->asignar_atributos();

         // Se  intenta insertar
         if ($this->alumno_class->xnew()) {
             // Si es que el insert se realizó con éxito se colocan variables de sesión 
             $this->asignar_sesion();
             return TRUE;
         } else {
             // Muestra el codigo de error arrojado por Mysql
             $this->errorcodigo = $this->alumno_class->get_error_num();
             $this->errormensaje = $this->alumno_class->get_error_string();
             return FALSE;
         }

     }




     /**
      * Vamos a asignar todos excepto matricula (PK) los atributos del objeto alumno sin 
      * importar su tipo al ejecutar el insert la API se encargará de decidir que atributos 
      * tiene que insertar y cuales dejar NULL de acuerdo al tipo de alumno. 
      * 
      * @access private
      * @author Sergio Morlán Páramo
      */
     private function asignar_atributos() {
         $this->alumno_class->set_numeroIdentificacion($_POST["alumno_numeroIdentificacion"]);
         $this->alumno_class->set_nombre($_POST["alumno_nombre"]);
         $this->alumno_class->set_apellidos($_POST["alumno_apellidos"]);
         $this->alumno_class->set_correoElectronico($_POST["alumno_correoElectronico"]);
         $this->alumno_class->set_fecha_nacimiento($_POST["alumno_fecha_nacimiento"]);
         $this->alumno_class->set_gradoAcademico($_POST["alumno_gradoAcademico"]);
         $this->alumno_class->set_telefono($_POST["alumno_telefono"]);
         $this->alumno_class->set_ocupacion($_POST["alumno_ocupacion"]);
         $this->alumno_class->set_tipo($_POST["alumno_tipo"]);
         $this->alumno_class->set_carrera($_POST["alumno_carrera"]);
         $this->alumno_class->set_semestre($_POST["alumno_semestre"]);
         $this->alumno_class->set_jubilado($_POST["alumno_jubilado"]);
         $this->alumno_class->set_facultad($_POST["alumno_facultad"]);
         $this->alumno_class->set_password($_POST["alumno_password"]);

     }




     /**
      * Vamos a asignar todas la varibles de sesión en caso de ser exitoso un registro o
      * un loggin o para actualizar los datos de sessión
      * 
      * @access private
      * @author Sergio Morlán Páramo
      */
     private function asignar_sesion() {
         $this->session->set_userdata('NUMEROIDENTIFICACION', $_POST["alumno_numeroIdentificacion"]);
         $this->session->set_userdata('ID_ALUMNO', $this->alumno_class->get_matricula());
         $this->session->set_userdata('NOMBRE', $_POST["alumno_nombre"]);
         $this->session->set_userdata('APELLIDOS', $_POST["alumno_apellidos"]);
         $this->session->set_userdata('TIPO', $_POST["alumno_tipo"]);
         $this->session->set_userdata('MISESION', TRUE); // <=== Inicio de Sesión

     }




     /////////////////////////////////////////////////////////////

     public function actualizar() {

         /* si asi no se pude una sugerencia es que viaje por post o crear una funcion que regrese si id en el api */
         $this->session->userdata('MISESION');
         $id = $this->session->userdata('ID_ALUMNO');

         // Asignado los atributos de alumno
         $this->alumno_class->set_matricula($id);
         $this->asignar_atributos();

         if ($this->alumno_class->xchange($id)) {
             $this->asignar_sesion();
             return TRUE;
         } else {
             $this->errorcodigoe = $this->alumno_class->get_error_num();
             $this->errormensaje = $this->alumno_class->get_error_string();
             return FALSE;
         }

     }




     /////////////////////////////////////////////////////////


     public function validar_usuario() {


         $numeroIdentificacion = $_POST["alumno_numeroIdentificacion"];

         $encontradoID = $this->alumno_class->xget($_POST["alumno_numeroIdentificacion"], "numeroIdentificacion");
         $encontradoMail = $this->alumno_class->xget($_POST["alumno_numeroIdentificacion"], "correoElectronico");


         if ($encontradoID || $encontradoMail) {
             if ($this->alumno_class->get_numeroIdentificacion() == $_POST["alumno_numeroIdentificacion"] || $this->alumno_class->get_correoElectronico() == $_POST["alumno_numeroIdentificacion"]) {
                 /* $datos = array(
                   'nombre' => $alumno->get_nombre(),
                   'apellidos' => $alumno->get_apellidos(),
                   'id' => $alumno->get_numeroIdentificacion()
                   );

                   $cookie = array(
                   'name' => 'CookieNamess',
                   'value' => $this->serialize_array_cookie($datos),
                   'expire' => '86200',
                   'domain' => '127.0.0.1',
                   'path' => '/',
                   'prefix' => 'myprefix_',
                   'secure' => TRUE
                   );

                   $this->input->set_cookie($cookie); */
                 //show_error($this->alumno_class->get_nombre());
                 $this->session->set_userdata('NUMEROIDENTIFICACION', $this->alumno_class->get_numeroIdentificacion());
                 $this->session->set_userdata('NOMBRE', $this->alumno_class->get_nombre());
                 $this->session->set_userdata('APELLIDOS', $this->alumno_class->get_apellidos());
                 $this->session->set_userdata('TIPO', $this->alumno_class->get_tipo());
                 return TRUE;
             } else {
                 return FALSE;
             }
         } else {
             $this->session->set_userdata('INTENTOS', $this->session->userdata('INTENTOS') + 1);
             $this->session->unset_userdata('NUMEROIDENTIFICACION');
             $this->session->unset_userdata('NOMBRE');
             $this->session->unset_userdata('APELLIDOS');
             return FALSE;
         }

     }




     public function validar_contraseña($id_ALUMNO=FALSE) {
         if ($id_ALUMNO) {
             $this->alumno_class->xget($id_ALUMNO);
             if ($this->alumno_class->get_password() == $_POST["alumno_password"]) {
                 $this->session->set_userdata('ID_ALUMNO', $this->alumno_class->get_matricula());
                 $this->session->set_userdata('TIPO', $this->alumno_class->get_tipo());
                 return TRUE;
             } else {
                 $this->session->set_userdata('INTENTOS', $this->session->userdata('INTENTOS') + 1);
                 return FALSE;
             }
         } else {
             return FALSE;
         }

     }




     /**
      * 
      */
     public function inscribir($grupo, $id_alumno) {
         $alumno = new $this->alumno_class($id_alumno);
         date_default_timezone_set('UTC');
         if (!$alumno->pre_inscribir($grupo, date("Y-m-d")))
             return TRUE;

     }


     /**
      * 
      */
     public function obtener_historial($id_alumno){
         $alumno = new $this->alumno_class($id_alumno);
        return $alumno->historial();
     }


     public function limpiar_session() {
         $this->session->unset_userdata('NUMEROIDENTIFICACION');
         $this->session->unset_userdata('NOMBRE');
         $this->session->unset_userdata('APELLIDOS');
         $this->session->unset_userdata('INTENTOS');
         $this->session->unset_userdata('TIPO');
         $this->session->unset_userdata('MISESION');
         //$this->session->sess_destroy();

     }




     public function obtener_alumno($id_matricula) {
         $alumno = new $this->alumno_class($id_matricula);
         return $alumno;

     }





     public function serialize_array_cookie($p_array) {
         $tmp = serialize($p_array);
         $tmp = urlencode($tmp);
         return $tmp;

     }




     public function unserilize_array_cookie($p_array) {
         $tmp = stripslashes($p_array);
         $tmp = urldecode($tmp);
         $tmp = unserialize($tmp);
         return $tmp;

     }




     public function encontrar_email($p_email) {
         if ($this->alumno_class->xget($p_emai, "correoElectronico"))
             return TRUE;

     }




 }

// END Model Class

/* End of file Model_profesor.php */
/* Location: ./application/models/Model_profesor.php */
